#pragma once

namespace grazier
{

class Actor;
class ActorComponent;

typedef unsigned int ActorId;
typedef unsigned int ComponentId;

const ActorId INVALID_ACTOR_ID = 0;
const ComponentId INVALID_COMPONENT_ID = 0;

typedef shared_ptr<Actor> StrongActorPtr;
typedef weak_ptr<Actor> WeakActorPtr;
typedef shared_ptr<ActorComponent> StrongActorComponentPtr;
typedef weak_ptr<ActorComponent> WeakActorComponentPtr;


class Viewport;

class IGrazierGame
{
public :
	void virtual VUpdate(float deltaMs) = 0;
		
	void virtual VDraw(float deltaMs) = 0;
	void virtual VOnScreenSizeChanged(Viewport viewport) = 0;
};

} //namespace grazier